package com.wang.jmonkey.modules.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wang.jmonkey.modules.system.model.dto.SystemMenuTreeDto;
import com.wang.jmonkey.modules.system.model.dto.SystemModuleResourceDto;
import com.wang.jmonkey.modules.system.model.dto.SystemResourceTreeDto;
import com.wang.jmonkey.modules.system.model.entity.SystemResourceEntity;
import com.wang.jmonkey.modules.system.model.enums.SystemResourceTypeEnum;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 系统资源信息表(SystemResource)表数据库访问层
 *
 * @author HeJiawang
 * @since 2021-05-21 21:45:38
 */
public interface SystemResourceMapper extends BaseMapper<SystemResourceEntity> {

    /**
     * 逻辑删除资源信息
     * @param tableName 资源表名
     * @param id 资源表中的id
     * @return 删除个数
     */
    int removeResource(@Param("tableName") String tableName, @Param("id") Long id);

    /**
     * 修改资源的上级资源id
     * @param resource 资源信息
     * @return true 修改成功
     */
    int updateParentId(SystemResourceEntity resource);

    /**
     * 获取资源树
     * @param type 资源类型
     * @return 资源树信息
     */
    List<SystemResourceTreeDto> tree(@Param("type") SystemResourceTypeEnum type);

    /**
     * 获取用户有权限的系统信息
     * @param userId 用户id
     * @return 系统信息
     */
    List<SystemModuleResourceDto> list(@Param("userId") Long userId);

    /**
     * 获取用户有权限的菜单路由信息
     * @param userId 用户id
     * @return 菜单路由信息
     */
    List<SystemMenuTreeDto> listMenu(@Param("userId") Long userId);
}
